Semiconductor memory is widely used in various electronic devices such as cellular telephones, digital cameras, personal digital assistants, medical electronics, mobile computing devices, servers, solid-state drives, non-mobile computing devices and other devices. Semiconductor memory may comprise non-volatile memory or volatile memory. A non-volatile memory allows information to be stored and retained even when the non-volatile memory is not connected to a source of power (e.g., a battery).
As memory structures increase in density, it becomes more challenging to maintain the integrity of the data being stored. One way to maintain data integrity is through use of Error Correction Codes (ECC). However, error correction codes can only handle a limited amount of error and data retention can be further improved by increasing the effectiveness of ECC techniques. Other ways to maintain data integrity is through the use of RAID (Redundant Array of Independent Disks) techniques, where data is stored in a redundant manner across a number of devices, allowing for the data to be reconstructed in case one of the devices fails. However, reconstruction of the lost data can be very time consuming.